SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE PROC [dbo].[SP_TXMVTO_CNTB_Q15]    
/*-------------------------------------------------------------------*/                  
/*----- Empresa           : OFISIS S.A.                          ----*/                  
/*----- Cliente           : OFISIS S.A.                          ----*/                  
/*----- Sistema           : Contabilidad                         ----*/                  
/*----- Modulo            : Empresa                              ----*/                  
/*----- Programa          : Reporte Libro Mayor General(Quiebres)----*/                  
/*----- Nombre            : SP_TXMVTO_CNTB_Q15                   ----*/                  
/*----- Script            : TXMVTO_CNTB                          ----*/                  
/*----- Desarrollado por  : Percy GarcDa                         ----*/                  
/*----- Fecha             : 11/08/2002                           ----*/                  
/*----- Base de Datos     : MS SQL Server                        ----*/                  
/*----- Version BD        : 2000                                 ----*/                  
/*-------------------------------------------------------------------*/                  
/*-------------------------------------------------------------------*/                
/*----- Modificado 1      : Percy Garc-a                         ----*/                
/*----- Fecha             : 01/12/2003                           ----*/                 
/*----- Detalle           : Se aumento join con la empresa en el cursor (tmplan_empr) ----*/                
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/                
/*----- Modificado 2      : Percy Garc-a                         ----*/                
/*----- Fecha             : 01/12/2003                           ----*/                
/*----- Detalle           : VALIDACIONES CASO MONEDA DIF. A SOLES, ACUMULE BIEN CASO QUIEBRES, MUESTRE SOLO         
RANGO ESCOGIDO  ----*/                
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/                
/*----- Modificado 3      : LMGP                                 ----*/                
/*----- Fecha             : 11/11/2004                           ----*/                
/*----- Detalle           : Migracion de Reporte Viru            ----*/                
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/        
/*----- Modificado 4      : PDGV                                 ----*/        
/*----- Fecha             : 17/05/2006                           ----*/        
/*----- Detalle           : EL ORDER BY FINAL SE AUMENTO DOC, FECHAASTO,NU_ASTO ----*/        
/*-------------------------------------------------------------------*/   
/*---------------------------------------------------------------------*/  
/*----- Modificado 5 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tama?o de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*-------------------------------------------------------------------*/                  
/*----- Drop proc SP_TXMVTO_CNTB_Q15                             ----*/                  
/*----- Grant Execute on SP_TXMVTO_CNTB_Q15 to PUBLIC            ----*/                  
/*----- SP_TXMVTO_CNTB_Q15                                       ----*/                  
/*-------------------------------------------------------------------*/                  
/*EXEC SP_TXMVTO_CNTB_Q15 '01', 1, 2006, 1, 5, 'DOL', '', '', '42101', '42151',                  
'','','',5, 2, 'CUD', 'USUARIO OFISIS', '', '', 'G'*/    
                  
@ISCO_EMPR                TD_VC_002,                  
@INNU_CNTB_EMPR           TD_IN_001,                  
@INNU_ANNO                TD_IN_004_ANNO,                  
@INNU_MESE_INIC           TD_IN_002_MESE,                  
@INNU_MESE_FINA           TD_IN_002_MESE,                  
@ISCO_MONE                TD_VC_003,                  
@ISCO_UNID_CNTB           TD_VC_003,                  
@ISCO_OPRC_CNTB           TD_VC_003,                  
@ISCO_CNTA_EMP1           TD_VC_020_CNTA,                  
@ISCO_CNTA_EMP2           TD_VC_020_CNTA,                  
@ISTI_AUXI_EMPR           TD_VC_001,                  
@ISCO_AUXI_EMP1           TD_VC_020,                  
@ISCO_AUXI_EMP2           TD_VC_020,       
           
@INNV_INFO_CNTA           TD_IN_001,                  
@INNV_QUIE_SUPE           TD_IN_001,                 
@ISTI_REPO                TD_VC_003,                  
@ISNO_USUA                TD_VC_050,    
@ISCA_WHER_MOVI           Varchar(2000),    
@ISCA_WHER_SALD           Varchar(2000),    
---@ISCA_WHER                Varchar(2000),    
@ISIN_UNID    TD_VC_001      -- U = Unidad, G = Todas las Unidades    
    
            
As
/*---------------------------------------                  
   Creando tabla temporal para el reporte                   
  ---------------------------------------*/                  
Create Table #TWMVTO_CNTB_Q15_1                   
(NU_MESE_QUIE      int NULL,                  
 CO_CNTA_QUI1      Varchar(20) NULL,                  
 CO_CNTA_QUI2      Varchar(1) NULL,            
 CO_CNTA_QUI3      Varchar(1) NULL,                  
 CO_CNTA_EMPR      Varchar(20) NULL,                  
 DE_CNTA_EMPR      Char(50) NULL,                  
 TO_CARG         Numeric(16,4)    NULL,                  
 TO_ABON           Numeric(16,4)    NULL,                  
 NU_MESE           int NULL,                  
 FE_ASTO_CNTB      Datetime NULL,                  
 NU_SECU           int NULL,                  
 CN_CNTB_EMP1      CHAR(10) NULL,                  
 TI_AUXI_EMPR      Char(01) NULL,                  
 CO_AUXI_EMPR      Varchar(20) NULL,                  
 CO_UNID_CNTB      Char(03) NULL,                  
 CO_OPRC_CNTB      Char(03) NULL,                   
 NU_ASTO           CHAR(10) NULL,                  
 TI_DOCU           Char(03) NULL,                  
 NU_DOCU           Char(20) NULL,                  
 FE_DOCU           Datetime NULL,                         
 IM_MVTO_ORIG      Numeric(16,4)    NULL,                  
 DE_GLOS           Char(100) NULL,                  
 IM_DEBE           Numeric(16,4)    NULL,                  
 IM_HABE           Numeric(16,4)    NULL,                   
 CO_TABL_ORIG      INT NULL,                   
 CO_CLAV_TAOR      VARCHAR(100) NULL,                  
 CO_ORDE_SERV      char(20) NULL )                  
                  
Declare                   
/* Variables a usar en el proceso */                  
 @VSTI_AUXI      TD_VC_010,                  
 @CSCO_CNTA      TD_VC_020_CNTA,                  
 @CSNO_CNTA      TD_VC_050,                  
 @CNIM_CARG      TD_NU_016_004,                  
 @CNIM_ABON      TD_NU_016_004,                  
 @VNNU_MESE      TD_IN_002_MESE,                  
 @VNNU_SECU      TD_IN_002,                  
 @VSCO_CNTA      TD_VC_020_CNTA,                  
 @VSCO_UNID      TD_VC_003,                  
 @VSCO_OPRC      TD_VC_003,                  
 @VSNU_ASTO      TD_VC_010,                  
 @VSTI_DOCU      TD_VC_003,                  
 @VSCO_MONE_CONT TD_VC_003,                  
 @VSNU_DOCU TD_VC_020,                  
 @VDFE_DOCU      TD_DT_001,                  
 @VSDE_GLOS      TD_VC_100,                  
 @VNIM_DEBE      TD_NU_016_004,                  
 @VNIM_HABE      TD_NU_016_004,                  
 @VSDE_CMD1     Char(255),                  
 @VSDE_CMD2      Char(255),                  
 @VNIM_SALD_CARG TD_NU_016_004,                          
 @VNIM_SALD_ABON TD_NU_016_004,                  
 @VNIM_CARG_INIC TD_NU_016_004,                  
 @VNIM_ABON_INIC TD_NU_016_004,                  
 @VNTO_CARG_GENE TD_NU_016_004,                  
 @VNTO_ABON_GENE TD_NU_016_004,                  
 @VSNU_MESE      Varchar (2),                  
 @VSNU_ANNO      Varchar (4),                  
 @VSNV_INFO_CNTA Varchar (2),                  
 @VSNU_CNTB_EMPR Varchar (2),                  
 @VSIM_CARG      Varchar (20),                  
 @VSIM_ABON      Varchar (20),                  
 @CNNU_MESE      TD_IN_002_MESE,                  
 @VNSU_DEBE      TD_NU_016_004,               
   
 @VNSU_HABE      TD_NU_016_004,           
 @VSCO_CNTA_0001 TD_VC_020,         
 @VNNU_QUIE_0001 TD_IN_001,                  
 @VNNU_QUIE_0002 TD_IN_001,    
 @VSCA_UNID_MOVI TD_VC_255,     
 @VSCA_UNID_SALD TD_VC_255,    
 @VSCA_CNTA_MOVI TD_VC_255,     
 @VSCA_CNTA_SALD TD_VC_255,    
 @VSCA_MONE_MOVI TD_VC_255,     
 @VSCA_MONE_SALD TD_VC_255,    
 @VSCA_MONE_REPO Varchar(800), --TD_VC_255,    
 @VSST_FILT Varchar(1),    
 @VNNV_INFO_CNTA TD_IN_001,      
 @VSNV_QUIE_CNTA TD_VC_040,      
 @VNCA_INIC      TD_IN_001,      
 @VNCA_LONG      TD_IN_001,      
 @VNCA_LONG_AUXI TD_IN_001,      
 @VNNV_AUXI      TD_IN_001,      
 @VNNU_FINA      TD_IN_001,               
 @VNTO_DEBE      TD_NU_016_004,        
 @VNTO_HABE      TD_NU_016_004, 
 @VSCO_CNTA_EMP1 TD_VC_020_CNTA

Select @VSST_FILT = 'N'    
If DataLength(Rtrim(Ltrim(@ISCA_WHER_SALD))) > 0    
  Select @VSST_FILT = 'S'    
    
Select @VSNV_INFO_CNTA = Convert(Varchar, @INNV_INFO_CNTA)                  
    
/*----------- FILTRO POR UNIDAD -------------*/    
Select @VSCA_UNID_MOVI = '' Select @VSCA_UNID_SALD = ''    
    
If @ISIN_UNID = 'U'    
 Begin    
  Select @VSCA_UNID_MOVI = ' And TXMVTO_CNTB.CO_UNID_CNTB = "' + @ISCO_UNID_CNTB + '" '    
  Select @VSCA_UNID_SALD = ' And TASALD_EMPR.CO_UNID_CNTB = "' + @ISCO_UNID_CNTB + '" '    
 End    
    
/*----------- R E P O R T E S   D E   C U E N T A S ------------*/                  
    
Select @VSCA_CNTA_MOVI = '' Select @VSCA_CNTA_SALD = ''    
If @ISCO_CNTA_EMP1 != '' And @ISCO_CNTA_EMP2 != ''    
Begin    
   
 Select @VSCA_CNTA_MOVI = ' And TXMVTO_CNTB.CO_CNTA_EMPR >= "' + @ISCO_CNTA_EMP1 + '" And TXMVTO_CNTB.CO_CNTA_EMPR <= "' + @ISCO_CNTA_EMP2 + '" '    
 Select @VSCA_CNTA_SALD = ' And TASALD_EMPR.CO_CNTA_EMPR >= "' + @ISCO_CNTA_EMP1 + '" And TASALD_EMPR.CO_CNTA_EMPR <= "' + @ISCO_CNTA_EMP2 + '" '     
 Select @ISCO_CNTA_EMP1 = SubString(@ISCO_CNTA_EMP1, 1, @INNV_QUIE_SUPE)    
 Select @VSCO_CNTA_EMP1 = @ISCO_CNTA_EMP1
End    
    
    
    
/*----------- FILTRO POR MONEDA -------------*/    
    
Select @VSCO_MONE_CONT = CO_MONE    
From TTCNTB_EMPR     
Where CO_EMPR = @ISCO_EMPR     
And NU_CNTB_EMPR = @INNU_CNTB_EMPR     
    
Select @VSCO_CNTA_0001 = @ISCO_CNTA_EMP1          
    
-- Si la moneda de reporte es igual a moneda de la contabilidad    
If @ISCO_MONE = @VSCO_MONE_CONT    
Begin    
   Select @VSCA_MONE_MOVI =     
        ' (ASCII(TXMVTO_CNTB.TI_OPER)/67)*Round(IsNull(TXMVTO_CNTB.IM_MVTO_CNTB, 0), 2),    
          (65/ASCII(TXMVTO_CNTB.TI_OPER))*Round(IsNull(TXMVTO_CNTB.IM_MVTO_CNTB, 0), 2) '    
   Select @VSCA_MONE_SALD =     
        ' Isnull(SUM(ISNULL(TASALD_EMPR.IM_CARG_CNTB,0)), 0) AS CARGO,    
          Isnull(SUM(ISNULL(TASALD_EMPR.IM_ABON_CNTB,0)), 0) AS ABONO '    
   Select @VSCA_MONE_REPO = ' '    
End    
-- Si la moneda de reporte es Diferente a moneda de la contabilidad    
Else If @ISCO_MONE != @VSCO_MONE_CONT    
Begin    
   Select @VSCA_MONE_MOVI =     
        ' (ASCII(TXMVTO_CNTB.TI_OPER)/67)*Round(IsNull(TXMVTO_CNTB.IM_MVTO_ORIG, 0), 2),    
          (65/ASCII(TXMVTO_CNTB.TI_OPER))*Round(IsNull(TXMVTO_CNTB.IM_MVTO_ORIG, 0), 2) '    
   Select @VSCA_MONE_SALD =     
        ' Isnull(SUM(ISNULL(TASALD_EMPR.IM_CARG_ORIG,0)), 0) AS CARGO,    
          Isnull(SUM(ISNULL(TASALD_EMPR.IM_ABON_ORIG,0)), 0) AS ABONO '    
   Select @VSCA_MONE_REPO = ' and DATALENGTH(RTRIM(TASALD_EMPR.CO_CNTA_EMPR)) = ' + @VSNV_INFO_CNTA + '    
         and ( ( DATALENGTH(RTRIM(TMPLAN_EMPR.CO_CNTA_EMPR)) = ' + @VSNV_INFO_CNTA + ' and  TMPLAN_EMPR.CO_MONE = "' + @ISCO_MONE + '")    
            or   DATALENGTH(RTRIM(TMPLAN_EMPR.CO_CNTA_EMPR)) < ' + @VSNV_INFO_CNTA + ' ) '    
    
End    
    
    
Select @VNNU_MESE = @INNU_MESE_INIC                  
Select @VSNU_ANNO = Convert(Varchar, @INNU_ANNO)                  
Select @VSNU_CNTB_EMPR = Convert(Varchar, @INNU_CNTB_EMPR)
                  
    
While @VNNU_MESE <= @INNU_MESE_FINA    
Begin        
  Select @VSNU_MESE = Convert(Varchar, @VNNU_MESE)    
    
    EXEC('Insert Into #TWMVTO_CNTB_Q15_1(NU_MESE_QUIE, CO_CNTA_QUI1, CO_CNTA_QUI2,                 
     CO_CNTA_QUI3, CO_CNTA_EMPR, DE_CNTA_EMPR, TO_CARG,TO_ABON,NU_MESE,FE_ASTO_CNTB,                
     NU_SECU, CN_CNTB_EMP1,TI_AUXI_EMPR,CO_AUXI_EMPR,CO_UNID_CNTB, CO_OPRC_CNTB,                
     NU_ASTO,TI_DOCU,NU_DOCU,FE_DOCU,IM_MVTO_ORIG,DE_GLOS,IM_DEBE,IM_HABE, CO_TABL_ORIG,                 
     CO_CLAV_TAOR, CO_ORDE_SERV )          
    Select ' + @VSNU_MESE + ', Replicate(" ", Datalength( T3.CUENTA )) + T3.CUENTA,                 
     (Case When DataLength(t3.CUENTA) = ' + @INNV_INFO_CNTA + ' Then Datalength(t3.CUENTA)              
     Else Datalength(TXMVTO_CNTB.CO_CNTA_EMPR) End), datalength(T3.CUENTA), T3.CUENTA, T3.DESCRIPCION,     
     T3.CARGO, T3.ABONO, TXMVTO_CNTB.NU_MESE, TXMVTO_CNTB.FE_ASTO_CNTB,                 
     TXMVTO_CNTB.NU_SECU, TXMVTO_CNTB.CO_CNTA_EMPR, TXMVTO_CNTB.TI_AUXI_EMPR, TXMVTO_CNTB.CO_AUXI_EMPR,     
     TXMVTO_CNTB.CO_UNID_CNTB, TXMVTO_CNTB.CO_OPRC_CNTB, TXMVTO_CNTB.NU_ASTO, TXMVTO_CNTB.TI_DOCU,     
     TXMVTO_CNTB.NU_DOCU, TXMVTO_CNTB.FE_DOCU, Round(IsNull(TXMVTO_CNTB.IM_MVTO_ORIG,0),2),                 
     TXMVTO_CNTB.DE_GLOS,   ' + @VSCA_MONE_MOVI + ', TXMVTO_CNTB.CO_TABL_ORIG,    
     TXMVTO_CNTB.CO_CLAV_TAOR, TXMVTO_CNTB.CO_ORDE_SERV    
    From (Select  TMPLAN_EMPR.CO_CNTA_EMPR AS CUENTA,    
                    MAX(RTRIM(TMPLAN_EMPR.DE_CNTA_EMPR)) AS DESCRIPCION, ' + @VSCA_MONE_SALD + '    
            From   TMPLAN_EMPR    
	      Left Outer Join TASALD_EMPR
	      On TASALD_EMPR.CO_EMPR = "' + @ISCO_EMPR + '"                
              And TASALD_EMPR.NU_CNTB_EMPR = ' + @VSNU_CNTB_EMPR + ' 
       	      And TASALD_EMPR.NU_ANNO = ' + @VSNU_ANNO + ' 
              And TASALD_EMPR.NU_MESE < ' + @VSNU_MESE + @VSCA_UNID_SALD + @VSCA_CNTA_SALD  + ' 
              And (("' + @VSST_FILT + '" = "N" 
              And TASALD_EMPR.TI_AUXI_EMPR IS NULL 
              And TASALD_EMPR.CO_AUXI_EMPR IS NULL 
              And TASALD_EMPR.CO_ORDE_SERV IS NULL) Or ("' + @VSST_FILT + '" = "S" ' +  @ISCA_WHER_SALD + ')) 
	      And TMPLAN_EMPR.CO_EMPR = TASALD_EMPR.CO_EMPR 
              And TMPLAN_EMPR.CO_CNTA_EMPR = TASALD_EMPR.CO_CNTA_EMPR 
            Where TMPLAN_EMPR.CO_EMPR = "' + @ISCO_EMPR + '" 
              And TMPLAN_EMPR.NU_ANNO = 9999 ' + @VSCA_MONE_REPO + ' 
             Group By TMPLAN_EMPR.CO_CNTA_EMPR  ) T3 
         Left Outer Join TXMVTO_CNTB
         On TXMVTO_CNTB.CO_EMPR = "' + @ISCO_EMPR + '"
         And   TXMVTO_CNTB.NU_CNTB_EMPR = ' + @VSNU_CNTB_EMPR + '
         And   TXMVTO_CNTB.NU_ANNO = ' + @VSNU_ANNO + '
         And   TXMVTO_CNTB.NU_MESE = ' + @VSNU_MESE + @VSCA_UNID_MOVI + @VSCA_CNTA_MOVI + '
         And   TXMVTO_CNTB.CO_CNTA_EMPR = T3.CUENTA 
         And   TXMVTO_CNTB.SI_MVTO_CNTB = "APR" ' + @ISCA_WHER_MOVI )
    
  Select @VNNU_MESE = @VNNU_MESE + 1    
End ---While    
    
/*----------ACTUALIZA LOS CARGOS Y ABONOS PARA LAS CUENTAS NO ANALITICAS------------------*/                      
Declare CU_TXMVTO_CNTB_Q15_2 Cursor For                     
Select NU_MESE_QUIE, CO_CNTA_EMPR                    
From #TWMVTO_CNTB_Q15_1                    
Where DataLength(CO_CNTA_EMPR)!= @INNV_INFO_CNTA                    
                      
Open CU_TXMVTO_CNTB_Q15_2                      
Fetch CU_TXMVTO_CNTB_Q15_2 Into @CNNU_MESE, @CSCO_CNTA                      
                      
While @@Fetch_status = 0                      
Begin                      
If (@ISCO_CNTA_EMP2 Is Null Or Rtrim(@ISCO_CNTA_EMP2) = '') And       
   (@VSCO_CNTA_0001 Is Null Or Rtrim(@VSCO_CNTA_0001) = '')      
 Select @VNSU_DEBE = Sum(IsNull(IM_DEBE, 0)), @VNSU_HABE = Sum(IsNull
(IM_HABE, 0))                       
 From #TWMVTO_CNTB_Q15_1                      
 Where NU_MESE_QUIE = @CNNU_MESE                      
 And CO_CNTA_EMPR LIKE @CSCO_CNTA + '%'                      
 And CO_CNTA_EMPR != @CSCO_CNTA                      
Else      
Begin
 Select @VNSU_DEBE = Sum(IsNull(IM_DEBE, 0)), @VNSU_HABE = Sum(IsNull(IM_HABE, 0))                       
 From #TWMVTO_CNTB_Q15_1                      
 Where NU_MESE_QUIE = @CNNU_MESE                      
 And CO_CNTA_EMPR LIKE @CSCO_CNTA + '%'                      
 And CO_CNTA_EMPR != @CSCO_CNTA                      
 And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2          
     
 Select @VNTO_DEBE = Sum(IsNull(T1.TO_CARG, 0)), @VNTO_HABE = Sum(IsNull(T1.TO_ABON, 0))
 From ( Select CO_CNTA_EMPR, Max(IsNull(TO_CARG, 0)) as TO_CARG, Max(IsNull(TO_ABON, 0)) as TO_ABON
	From #TWMVTO_CNTB_Q15_1
	Where NU_MESE_QUIE = @CNNU_MESE
	And DataLength(CO_CNTA_EMPR)= @INNV_INFO_CNTA 
	And  Rtrim(Ltrim(CO_CNTA_EMPR)) >= @ISCO_CNTA_EMP1 And Rtrim(Ltrim(CO_CNTA_EMPR)) <= @ISCO_CNTA_EMP2
	Group By CO_CNTA_EMPR ) T1
 Where T1.CO_CNTA_EMPR LIKE @CSCO_CNTA + '%'
 And T1.CO_CNTA_EMPR != @CSCO_CNTA
 Group by substring(T1.CO_CNTA_EMPR, 1, len(@CSCO_CNTA))
End                 

Update #TWMVTO_CNTB_Q15_1                     
Set IM_DEBE = @VNSU_DEBE,                      
    IM_HABE = @VNSU_HABE,
    TO_CARG = @VNTO_DEBE,
    TO_ABON = @VNTO_HABE
Where NU_MESE_QUIE = @CNNU_MESE                      
And CO_CNTA_EMPR = @CSCO_CNTA                      
                      
Fetch CU_TXMVTO_CNTB_Q15_2 Into @CNNU_MESE, @CSCO_CNTA                      
End                      
Close CU_TXMVTO_CNTB_Q15_2                      
Deallocate CU_TXMVTO_CNTB_Q15_2                      
      
  Select @VNNV_INFO_CNTA = NV_INFO_CNTA,        
         @VSNV_QUIE_CNTA = NV_QUIE_CNTA          
  From   TMPARA_CONT        
  Where  CO_EMPR = @ISCO_EMPR        
        
 Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) -1        
 Select @VNNU_FINA = 1        
        
  -- Empieza a Trabajar        
  While @VNNU_FINA = 1        
  Begin        
    -- Selecciona         
    -- la cadena es '020305'        
    Select @VNCA_INIC = @VNCA_LONG - 2        
    Select @VNCA_LONG = @VNCA_LONG - 2        
    Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))        
        
    -- Select @VNCA_INIC,@VNCA_LONG, @VNNV_AUXI        
    -- El Nivel Detalle ya existe y si es cero no se hace nada        
    If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )        
    Begin        
     If @ISCO_CNTA_EMP1 = '' And @ISCO_CNTA_EMP2 = ''                      
     Begin                      
      Insert Into #TWMVTO_CNTB_Q15_1                      
      (NU_MESE_QUIE, CO_CNTA_QUI1, CO_CNTA_QUI2, CO_CNTA_QUI3, CO_CNTA_EMPR, DE_CNTA_EMPR,                        
      TO_CARG,TO_ABON,NU_MESE ,FE_ASTO_CNTB,NU_SECU,       
      CN_CNTB_EMP1,TI_AUXI_EMPR,CO_AUXI_EMPR,CO_UNID_CNTB,                      
      CO_OPRC_CNTB,NU_ASTO,TI_DOCU,NU_DOCU,FE_DOCU,IM_MVTO_ORIG,DE_GLOS,IM_DEBE,IM_HABE,                      
      CO_TABL_ORIG , CO_CLAV_TAOR, CO_ORDE_SERV)                      
     Select                      
      T1.NU_MESE_QUIE, Replicate(' ', @VNNV_AUXI) + SUBSTRING(LTRIM(T1.CO_CNTA_EMPR), 1, @VNNV_AUXI),       
      '2', '1', SUBSTRING(T1.CO_CNTA_EMPR, 1, @VNNV_AUXI) + 'X', max(T2.DE_CNTA_EMPR),      
      SUM(T1.TO_CARG), SUM(T1.TO_ABON), NULL, NULL, NULL, NULL, NULL,      
      NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sum(T1.IM_DEBE), sum(T1.IM_HABE), NULL, NULL, NULL      
      From #TWMVTO_CNTB_Q15_1 T1, TMPLAN_EMPR T2      
      Where DataLength(T1.CO_CNTA_EMPR) = @INNV_INFO_CNTA      
      And   T2.CO_EMPR = @ISCO_EMPR      
      And   T2.NU_ANNO = 9999      
      And   T2.CO_CNTA_EMPR = SUBSTRING(T1.CO_CNTA_EMPR, 1, @VNNV_AUXI)      
      Group by T1.NU_MESE_QUIE, T1.CO_CNTA_QUI1, T1.CO_CNTA_EMPR      
     End                      
     Else If @ISCO_CNTA_EMP1 != '' And @ISCO_CNTA_EMP2 != ''                      
     Begin                      
      Insert Into #TWMVTO_CNTB_Q15_1                      
      (NU_MESE_QUIE, CO_CNTA_QUI1, CO_CNTA_QUI2, CO_CNTA_QUI3, CO_CNTA_EMPR, DE_CNTA_EMPR,                       
       TO_CARG, TO_ABON, NU_MESE ,FE_ASTO_CNTB,NU_SECU,                       
       CN_CNTB_EMP1,TI_AUXI_EMPR,CO_AUXI_EMPR,CO_UNID_CNTB,                      
       CO_OPRC_CNTB,NU_ASTO,TI_DOCU,NU_DOCU,FE_DOCU,IM_MVTO_ORIG,DE_GLOS,IM_DEBE,IM_HABE,                      
       CO_TABL_ORIG , CO_CLAV_TAOR, CO_ORDE_SERV)                      
      Select                       
      T1.NU_MESE_QUIE, Replicate(' ', @VNNV_AUXI) + T2.CO_CNTA_EMPR,       
      '2', '1', T2.CO_CNTA_EMPR + 'X', max(T2.DE_CNTA_EMPR),      
      max(T3.TO_CARG), max(T3.TO_ABON), NULL, NULL, NULL, NULL, NULL,      
      NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, sum(T1.IM_DEBE), sum(T1.IM_HABE), NULL, NULL, NULL      
      From #TWMVTO_CNTB_Q15_1 T1, TMPLAN_EMPR T2,       
           (select T1.NU_MESE_QUIE, SUBSTRING(LTRIM(T1.CO_CNTA_EMPR), 1, @VNNV_AUXI) AS CO_CNTA, sum(t1.TO_CARG) as TO_CARG, sum(t1.TO_ABON)  as TO_ABON      
     from #TWMVTO_CNTB_Q15_1 T1      
            Where DataLength(T1.CO_CNTA_EMPR) = @VNNV_AUXI      
     And   T1.CO_CNTA_EMPR Between @ISCO_CNTA_EMP1 And @ISCO_CNTA_EMP2      
            group by T1.NU_MESE_QUIE, SUBSTRING(LTRIM(T1.CO_CNTA_EMPR), 1, @VNNV_AUXI)) T3      
      Where DataLength(T1.CO_CNTA_EMPR) = @INNV_INFO_CNTA      
      And   T1.CO_CNTA_EMPR Between @ISCO_CNTA_EMP1 And @ISCO_CNTA_EMP2      
      And   T2.CO_EMPR = @ISCO_EMPR      
      And   T2.NU_ANNO = 9999      
      And   T2.CO_CNTA_EMPR = SUBSTRING(T1.CO_CNTA_EMPR, 1, @VNNV_AUXI)      
      And   T3.CO_CNTA = T2.CO_CNTA_EMPR      
      And   T3.NU_MESE_QUIE = T1.NU_MESE_QUIE      
      Group by T1.NU_MESE_QUIE, T2.CO_CNTA_EMPR      
     End                      
    End      
    If @VNCA_INIC <= 0         
     Select @VNNU_FINA = 0        
  End -- del While        
      
/*-------------------FIN DE ACTUALIZACION PARA CUENTAS NO ANALITICAS*/                      
            
               
/*--------------  D E T A L L A D O --------------*/                      
            
 /* INICIO CAPTURAR LAS CUENTAS QUE TIENEN ANALITICAS */            
 Create TABLE #TWCNTA_0001            
 (NU_MESE_0001 Int NULL,             
 CO_QUIE_0001 Varchar(20) NULL,             
 CO_QUIE_0002 Varchar(20) NULL)            
            
 Select @VNNU_QUIE_0001 = Convert(Int, SubString(NV_QUIE_CNTA, 1, 2)),             
 @VNNU_QUIE_0002 = Convert(Int, SubString(NV_QUIE_CNTA, 3, 2))        
 From TMPARA_CONT             
 Where CO_EMPR = @ISCO_EMPR             
 And NU_ANNO = 9999            
            
 Insert Into #TWCNTA_0001 (NU_MESE_0001, CO_QUIE_0001, CO_QUIE_0002)            
 Select Distinct NU_MESE_QUIE, SubString(Rtrim(Ltrim(CO_CNTA_QUI1)), 1, @VNNU_QUIE_0001),             
 SubString(Rtrim(Ltrim(CO_CNTA_QUI1)), 1, @VNNU_QUIE_0002)            
 From #TWMVTO_CNTB_Q15_1            
 Where DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA            
 And ((DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0              
 And Rtrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001             
 And Rtrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2) Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0))             
            
 /* FIN CAPTURAR LAS CUENTAS QUE TIENEN ANALITICAS */            
      
If @ISTI_REPO = 'CUD' /*---- CUENTA ordenado por Unidad -----*/                      
  Begin              
   Select NU_MESE_QUIE, CO_CNTA_QUI1, CO_CNTA_QUI2, CO_CNTA_QUI3, CO_CNTA_EMPR, DE_CNTA_EMPR,                     
   TO_CARG, TO_ABON, NU_MESE, convert(varchar(10),FE_ASTO_CNTB,103), NU_SECU, CN_CNTB_EMP1,                    
   TI_AUXI_EMPR, CO_AUXI_EMPR, CO_UNID_CNTB,CO_OPRC_CNTB, NU_ASTO, TI_DOCU, NU_DOCU,                     
   convert(varchar(10),FE_DOCU,103), IM_MVTO_ORIG, DE_GLOS, IM_DEBE, IM_HABE,                      
   CO_TABL_ORIG , CO_CLAV_TAOR , '', CO_ORDE_SERV            
   From #TWMVTO_CNTB_Q15_1                       
   Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0 Or IM_MVTO_ORIG > 0)       
   And   @ISCO_MONE = @VSCO_MONE_CONT) Or (@ISCO_MONE != @VSCO_MONE_CONT             
   And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)             
   Or (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA             
   And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1            
                 Where t1.NU_MESE_0001 = NU_MESE_QUIE            
                 And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1)) Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))            
       ) ) ) ) ) )                
   And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
   And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))               
   And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))               
   Or (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA              
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))                  
   Order By NU_MESE_QUIE, CO_CNTA_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, TI_AUXI_EMPR, CO_AUXI_EMPR,
   TI_DOCU,  NU_DOCU, FE_ASTO_CNTB, NU_ASTO        
 End                       
If @ISTI_REPO  = 'COD' /*---- CUENTA ordenado por Operacion -----*/                      
  Begin                      
   Select NU_MESE_QUIE, CO_CNTA_QUI1, CO_CNTA_QUI2, CO_CNTA_QUI3, CO_CNTA_EMPR, DE_CNTA_EMPR,                    
   TO_CARG, TO_ABON, NU_MESE, convert(varchar(10),FE_ASTO_CNTB,103), NU_SECU, CN_CNTB_EMP1,                    
   TI_AUXI_EMPR, CO_AUXI_EMPR, CO_UNID_CNTB,CO_OPRC_CNTB, NU_ASTO, TI_DOCU,                             
   NU_DOCU, convert(varchar(10),FE_DOCU,103),IM_MVTO_ORIG, DE_GLOS, IM_DEBE, IM_HABE ,                      
   CO_TABL_ORIG , CO_CLAV_TAOR , '', CO_ORDE_SERV      
   From #TWMVTO_CNTB_Q15_1                      
   Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0 Or IM_MVTO_ORIG > 0)       
   And   @ISCO_MONE = @VSCO_MONE_CONT) Or (@ISCO_MONE != @VSCO_MONE_CONT            
   And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)             
   Or (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA             
   And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1                       Where t1.NU_MESE_0001 = NU_MESE_QUIE            
                 And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1)) Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))            
       ) ) ) ) ) )                
   And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
   And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))               
   And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))               
   Or (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA              
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))                  
   Order By NU_MESE_QUIE, CO_CNTA_EMPR, CO_OPRC_CNTB, CO_UNID_CNTB, TI_AUXI_EMPR, CO_AUXI_EMPR,
   TI_DOCU,  NU_DOCU, FE_ASTO_CNTB, NU_ASTO                      
 End                       
If @ISTI_REPO = 'CVD' /*---- CUENTA ordenado por Voucher -----*/                      
  Begin                      
   Select NU_MESE_QUIE, CO_CNTA_QUI1, CO_CNTA_QUI2, CO_CNTA_QUI3, CO_CNTA_EMPR, DE_CNTA_EMPR,                     
   TO_CARG, TO_ABON, NU_MESE, convert(varchar(10),FE_ASTO_CNTB,103), NU_SECU, CN_CNTB_EMP1,                    
   TI_AUXI_EMPR, CO_AUXI_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ASTO, TI_DOCU, NU_DOCU,                     
   convert(varchar(10),FE_DOCU,103), IM_MVTO_ORIG,DE_GLOS, IM_DEBE, IM_HABE, CO_TABL_ORIG,                     
   CO_CLAV_TAOR, '',CO_ORDE_SERV                         
   From #TWMVTO_CNTB_Q15_1                      
   Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0 Or IM_MVTO_ORIG > 0) And             
   @ISCO_MONE = @VSCO_MONE_CONT) Or (@ISCO_MONE != @VSCO_MONE_CONT            
   And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)             
   Or (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA             
   And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1            
                 Where t1.NU_MESE_0001 = NU_MESE_QUIE            
                 And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1)) Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))            
        ) ) ) ) ) )                
   And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
   And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))               
   And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))               
   Or (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA   
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))                  
   Order By NU_MESE_QUIE, CO_CNTA_EMPR, NU_ASTO, CO_UNID_CNTB, CO_OPRC_CNTB, TI_AUXI_EMPR, CO_AUXI_EMPR,
   TI_DOCU,  NU_DOCU, FE_ASTO_CNTB                      
 End                       
If @ISTI_REPO = 'CFD' /*---- CUENTA ordenado por Fecha -----*/                      
  Begin                      
   Select NU_MESE_QUIE, CO_CNTA_QUI1, CO_CNTA_QUI2, CO_CNTA_QUI3, CO_CNTA_EMPR, DE_CNTA_EMPR,                     
   TO_CARG, TO_ABON, NU_MESE, convert(varchar(10),FE_ASTO_CNTB,103), NU_SECU, CN_CNTB_EMP1,                    
   TI_AUXI_EMPR, CO_AUXI_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ASTO, TI_DOCU, NU_DOCU,                     
   convert(varchar(10),FE_DOCU,103), IM_MVTO_ORIG, DE_GLOS, IM_DEBE, IM_HABE,CO_TABL_ORIG,                     
   CO_CLAV_TAOR , '', CO_ORDE_SERV                     
   From #TWMVTO_CNTB_Q15_1                      
   Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0 Or IM_MVTO_ORIG > 0) And             
   @ISCO_MONE = @VSCO_MONE_CONT) Or (@ISCO_MONE != @VSCO_MONE_CONT            
   And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)             
   Or (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA             
   And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1            
                 Where t1.NU_MESE_0001 = NU_MESE_QUIE            
                 And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1)) Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))            
       ) ) ) ) ) )          
   And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
   And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))               
   And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))               
   Or (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA              
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))                  
   Order By NU_MESE_QUIE, CO_CNTA_EMPR, FE_ASTO_CNTB, CO_UNID_CNTB, CO_OPRC_CNTB, TI_AUXI_EMPR,                     
   CO_AUXI_EMPR,TI_DOCU,  NU_DOCU,NU_ASTO                      
 End                       
      
/*--------------  R E S U M E N  --------------*/                      
If @ISTI_REPO = 'CUR' /*---- CUENTA ordenado por Unidad -----*/                      
  Begin                      
   Select NU_MESE_QUIE, CO_CNTA_EMPR, Max(CO_CNTA_QUI2), Max(CO_CNTA_QUI3), Max(CO_CNTA_QUI1),      
   DE_CNTA_EMPR, Max(TO_CARG), Max(TO_ABON), '', '', Isnull(SUM(Isnull(IM_DEBE, 0)), 0),       
   Isnull(SUM(Isnull(IM_HABE, 0)), 0)      
   From #TWMVTO_CNTB_Q15_1      
   Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0) And @ISCO_MONE = @VSCO_MONE_CONT)      
   Or (@ISCO_MONE != @VSCO_MONE_CONT      
   And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)      
   Or (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA      
   And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1      
                 Where t1.NU_MESE_0001 = NU_MESE_QUIE      
                 And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1)) Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))      
       ) ) ) ) ) )      
   And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
   And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))      
   And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))      
   Or (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA      
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))      
   Group By NU_MESE_QUIE, CO_CNTA_EMPR, DE_CNTA_EMPR      
   Order By NU_MESE_QUIE, CO_CNTA_EMPR      
 End      
If @ISTI_REPO = 'COR' /*---- CUENTA ordenado por Operacion -----*/      
  Begin      
   Select NU_MESE_QUIE, Max(CO_CNTA_QUI1), Max(CO_CNTA_QUI2), Max(CO_CNTA_QUI3), CO_CNTA_EMPR,      
   DE_CNTA_EMPR, MAX(TO_CARG), MAX(TO_ABON), '', '', Isnull(SUM(Isnull(IM_DEBE, 0)), 0),       
   Isnull(SUM(Isnull(IM_HABE, 0)), 0)                          
   From #TWMVTO_CNTB_Q15_1      
   Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0) And @ISCO_MONE = @VSCO_MONE_CONT)            
   Or (@ISCO_MONE != @VSCO_MONE_CONT            
   And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)             
   Or (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA             
   And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1            
                 Where t1.NU_MESE_0001 = NU_MESE_QUIE            
                 And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1)) Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))            
       ) ) ) ) ) )             
   And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
   And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))               
   And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))               
   Or (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA              
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))                  
   Group By NU_MESE_QUIE, CO_CNTA_EMPR, DE_CNTA_EMPR                      
   Order By NU_MESE_QUIE, CO_CNTA_EMPR                      
  End                       
If @ISTI_REPO = 'CVR' /*---- CUENTA ordenado por Voucher -----*/                      
  Begin                      
   Select NU_MESE_QUIE, Max(CO_CNTA_QUI1), Max(CO_CNTA_QUI2), Max(CO_CNTA_QUI3), CO_CNTA_EMPR,                    
   DE_CNTA_EMPR, MAX(TO_CARG), MAX(TO_ABON), '', '',                     
   Isnull(SUM(Isnull(IM_DEBE, 0)), 
0), Isnull(SUM(Isnull(IM_HABE, 0)), 0)                          
   From #TWMVTO_CNTB_Q15_1                      
   Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0) And @ISCO_MONE = @VSCO_MONE_CONT)            
   Or (@ISCO_MONE != @VSCO_MONE_CONT            
   And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)             
   Or  (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA             
   And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1            
           Where t1.NU_MESE_0001 = NU_MESE_QUIE            
                 And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1)) Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))            
       ) ) ) ) ) )             
   And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
   And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))               
   And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))               
   Or (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA              
   And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))                  
   Group By NU_MESE_QUIE, CO_CNTA_EMPR, DE_CNTA_EMPR                      
   Order By NU_MESE_QUIE, CO_CNTA_EMPR                      
  End                       
If @ISTI_REPO = 'CFR' /*---- CUENTA ordenado por Fecha -----*/                      
  Begin       
    Select NU_MESE_QUIE, Max(CO_CNTA_QUI1), Max(CO_CNTA_QUI2), Max(CO_CNTA_QUI3), CO_CNTA_EMPR,                    
    DE_CNTA_EMPR, MAX(TO_CARG), MAX(TO_ABON), '', '',                     
    Isnull(SUM(Isnull(IM_DEBE, 0)), 0), Isnull(SUM(Isnull(IM_HABE, 0)), 0)                          
    From #TWMVTO_CNTB_Q15_1                      
    Where (((TO_CARG > 0 Or TO_ABON > 0 Or IM_DEBE > 0 Or IM_HABE > 0) And @ISCO_MONE = @VSCO_MONE_CONT)            
    Or  (@ISCO_MONE != @VSCO_MONE_CONT            
    And ((DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA)             
    Or  (DataLength(Rtrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA             
    And ( Exists (Select CO_QUIE_0001 From #TWCNTA_0001 t1            
                  Where t1.NU_MESE_0001 = NU_MESE_QUIE            
                  And (t1.CO_QUIE_0001 = Rtrim(Ltrim(CO_CNTA_QUI1))       
                  Or t1.CO_QUIE_0002 = Rtrim(Ltrim(CO_CNTA_QUI1)))            
         ) ) ) ) ) )             
    And (DataLength(Rtrim(@ISCO_CNTA_EMP2)) = 0 Or (DataLength(Rtrim(@ISCO_CNTA_EMP2)) > 0       
    And (((DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) < @INNV_INFO_CNTA       
    And RTrim(Ltrim(CO_CNTA_QUI1)) >= SubString(@VSCO_CNTA_0001, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1))))               
    And RTrim(Ltrim(CO_CNTA_QUI1)) <= SubString(@ISCO_CNTA_EMP2, 1, DataLength(RTrim(Ltrim(CO_CNTA_QUI1)))))               
    Or  (DataLength(RTrim(Ltrim(CO_CNTA_QUI1))) = @INNV_INFO_CNTA              
    And RTrim(Ltrim(CO_CNTA_QUI1)) >= @VSCO_CNTA_0001 And RTrim(Ltrim(CO_CNTA_QUI1)) <= @ISCO_CNTA_EMP2)))))                  
    Group By NU_MESE_QUIE, CO_CNTA_EMPR, DE_CNTA_EMPR          
    Order By NU_MESE_QUIE, CO_CNTA_EMPR                      
  End                       
      
return          
    
/*--------------------------------------------- Fin ---------------------------------------------------------------*/






GO
